{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 10 Analyzing mosaic plots"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import plotly.graph_objects as go\n",
"import seaborn as sns\n",
"from statsmodels.graphics.mosaicplot import mosaic"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import findspark\n",
"\n",
"findspark.init()\n",
"from pyspark.context import SparkContext\n",
"from pyspark.sql import functions as F\n",
"from pyspark.sql.session import SparkSession\n",
"\n",
"spark = SparkSession.builder.appName(\"statistics\").master(\"local\").getOrCreate()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[khanacademy](https://www.khanacademy.org/math/ap-statistics/analyzing-categorical-ap/xfb5d8e68:mosaic-plots/v/analyzing-mosaic-plots?modal=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"dataset = {\n",
" \"surveyees\": [\"Students\", \"Staff\", \"Parents\"],\n",
" \"No\": [800, 60, 150],\n",
" \"Yes\": [200, 240, 150],\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" No | \n",
" Yes | \n",
"
\n",
" \n",
" surveyees | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Students | \n",
" 800 | \n",
" 200 | \n",
"
\n",
" \n",
" Staff | \n",
" 60 | \n",
" 240 | \n",
"
\n",
" \n",
" Parents | \n",
" 150 | \n",
" 150 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" No Yes\n",
"surveyees \n",
"Students 800 200\n",
"Staff 60 240\n",
"Parents 150 150"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(dataset).set_index(\"surveyees\")\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+---------+---+---+\n",
"|surveyees| No|Yes|\n",
"+---------+---+---+\n",
"| Students|800|200|\n",
"| Staff| 60|240|\n",
"| Parents|150|150|\n",
"+---------+---+---+\n",
"\n"
]
}
],
"source": [
"sdf = spark.createDataFrame(zip(*dataset.values()), schema=list(dataset.keys()))\n",
"sdf.show()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(,\n",
" {('Students', 'No'): (0.0, 0.0, 0.6188118811881188, 0.7973421926910299),\n",
" ('Students', 'Yes'): (0.0,\n",
" 0.8006644518272424,\n",
" 0.6188118811881188,\n",
" 0.19933554817275742),\n",
" ('Staff', 'No'): (0.6237623762376238,\n",
" 0.0,\n",
" 0.18564356435643564,\n",
" 0.19933554817275748),\n",
" ('Staff', 'Yes'): (0.6237623762376238,\n",
" 0.2026578073089701,\n",
" 0.18564356435643564,\n",
" 0.7973421926910299),\n",
" ('Parents', 'No'): (0.8143564356435643,\n",
" 0.0,\n",
" 0.18564356435643564,\n",
" 0.4983388704318937),\n",
" ('Parents', 'Yes'): (0.8143564356435643,\n",
" 0.5016611295681063,\n",
" 0.18564356435643564,\n",
" 0.4983388704318937)})"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"mosaic(df.stack())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
},
"toc-autonumbering": false
},
"nbformat": 4,
"nbformat_minor": 4
}